#include<bits/stdc++.h>
#define M 998244353
#define pb push_back
#define I 1ll
#define N 200005
using namespace std;
int n,m,perm[N],cnt;
vector<int> pr[125];
map<vector<int>,int> id;
void inc(int &x,int y){
	x+=y; if(x>=M) x-=M;
}struct Mat{
	int p[125][125];
	Mat(){memset(p,0,sizeof(p));}
	friend Mat operator * (const Mat& x,const Mat& y){
		Mat ch; for(int i=1;i<=cnt;i++) for(int j=1;j<=cnt;j++)
			for(int k=1;k<=cnt;k++) inc(ch.p[i][j],I*x.p[i][k]*y.p[k][j]%M);
		return ch; } 
}A,B;
Mat Fast(Mat x,int y){
	Mat ret; for(int i=1;i<=cnt;i++) ret.p[i][i]=1;
	while(y){
		if(y&1) ret=ret*x;
		x=x*x,y>>=1;
	}return ret;
}void print(){
	for(int i=1;i<=15;i++){
		Mat x=Fast(A,i); printf("D:i=%d\n",i);
		for(int j=1;j<=1;j++,puts(""))
			for(int k=1;k<=cnt;k++) printf("%d ",x.p[j][k]);
		puts("");
	}
}signed main(){
	freopen("drama.in","r",stdin);
	freopen("drama.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++) perm[i]=i;
	do{ vector<int> vi;
		for(int i=1;i<=n;i++) vi.pb(perm[i]);
		pr[++cnt]=vi,id[vi]=cnt;
	}while(next_permutation(perm+1,perm+n+1));
	for(int i=1;i<=cnt;i++)
		for(int j=0;j<n;j++){
			vector<int> vi;
			for(int t=1;t<=j;t++) vi.pb(pr[i][t]);
			vi.pb(pr[i][0]);
			for(int t=j+1;t<n;t++) vi.pb(pr[i][t]);
			A.p[i][id[vi]]++;
		}
	B.p[1][1]=1,B=B*Fast(A,m);
	printf("%d\n",B.p[1][1]);
	return 0;
}
